let bgAudioManager

export const createPlayer = () => {
  bgAudioManager = uni.getBackgroundAudioManager
    ? uni.getBackgroundAudioManager()
    : uni.createInnerAudioContext()

  // 监听事件
  //音频停止事件
  bgAudioManager.onStop(() => uni.$emit('onStop', bgAudioManager))

  // 音频播放事件
  bgAudioManager.onPlay(() => uni.$emit('onPlay', bgAudioManager))

  // 音频暂停事件
  bgAudioManager.onPause(() => uni.$emit('onPause', bgAudioManager))

  // 音频进入可以播放状态，但不保证后面可以流畅播放
  bgAudioManager.onCanplay(() => uni.$emit('onCanplay', bgAudioManager))

  //音频播放进度更新事件
  bgAudioManager.onTimeUpdate(() => uni.$emit('onTimeUpdate', bgAudioManager))

  // 音频播放错误事件
  bgAudioManager.onError(() => uni.$emit('onError', bgAudioManager))

  // 音频加载中事件，当音频因为数据不足，需要停下来加载时会触发
  bgAudioManager.onWaiting(() => uni.$emit('onWaiting', bgAudioManager))

  // 音频进行 seek 操作事件
  bgAudioManager.onSeeking(() => uni.$emit('onSeeking', bgAudioManager))

  // 音频完成 seek 操作事件
  bgAudioManager.onSeeked(() => uni.$emit('onSeeked', bgAudioManager))

  //音频自然播放结束事件
  bgAudioManager.onEnded(() => uni.$emit('onEnded', bgAudioManager))

  // 监听系统操作中心切歌 仅IOS
  if (bgAudioManager.onPrev) {
    bgAudioManager.onPrev(() => uni.$emit('onPrev', bgAudioManager))
    bgAudioManager.onNext(() => uni.$emit('onNext', bgAudioManager))
  }
}

export const getPlayer = () => bgAudioManager

/**
 * @param {string} data: 设置歌曲信息
 */
export const setInfo = (data) => {
  if (bgAudioManager?.src) bgAudioManager.stop()

  // 设置背景音频，否则就音频组件
  if (!!uni.getBackgroundAudioManager) {
    bgAudioManager.title = data.name
    bgAudioManager.singer = data.artist
    // bgAudioManager.epname = data.album
    bgAudioManager.coverImgUrl = data.pic
  } else {
    bgAudioManager.obeyMuteSwitch = true
    bgAudioManager.volume = 0.3
    bgAudioManager.playbackRate = 1.0
  }
  bgAudioManager.src = data.url
  // bgAudioManager.pause()
  // bgAudioManager.play()
}
